package com.chapter2json.demo.tools;

import com.alibaba.fastjson.JSON;
import com.chapter2json.demo.pojo.User;

/**
 * 专门用于返回值的设定类
 */
public class JsonResultObject<T> {

    /**
     * 这里的T采用了泛型，我们想要返回什么对象到json中，那么就把这个对象设置到T属性中即可。
     */
    private T data;
    private String code;
    private String message;
    private String errorCode;
    private String errorMessage;


    public static void main(String[] args) {
        /**
         * 泛型：
         * 我们在定义类的时候，有些属性的类型是无法确定的，那么可以使用一个字母来代替
         * 习惯写成大写字母，T，X，Y，Z
         * 在使用泛型类的时候，所用用到的地方类型要保持一致
         */
        User user1 = new User("gameboy", "23234");
        JsonResultObject<User> obj = new JsonResultObject<>(user1, "bb", "cc", "dd", "ee");
        System.out.println(JSON.toJSONString(obj));
    }

    public JsonResultObject(T data, String code, String message, String errorCode, String errorMessage) {
        this.data = data;
        this.code = code;
        this.message = message;
        this.errorCode = errorCode;
        this.errorMessage = errorMessage;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMessage() {
        return errorMessage;
    }

    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}
